// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rainbowchat.http.file.u;

import com.x52im.rainbowchat.BaseConf;
import com.x52im.rainbowchat.http.file.dto.BigFileType;

/** 
* 短视频文件上传处理实现类（支持大文件断点分块上传）。
* <p>
* <b>目前：</b>RainbowChat中默认支持10s短视频。按照微信、易信、RainbowChat中的压缩率
* ，10秒短视频约为1.3MB至2MB左右，对于移动弱网络来说，这也算是大文件了）。<font color="#0000ff">
* 如果您的应用需要支持更长时间的短视频，只需放开手机端的录制时间限制即可，理论上本服务端
* 文件上传处理类是可处理大至上G的短视频文件上传哦！</font>
* <p>
* <b>提示：</b>大文件上传原理，详见 {@link BigUploaderRoot}中的详细说明。
* 
* @author Json, Jack Jiang
* @since 4.4
* @see BigFileType
*/
public class ShortVideoUploader extends BigUploaderRoot
{
	private static final long serialVersionUID = 1L;

	/**
	 * 上传的文件要保存的目录（此目录末尾要带“/”哦）。
	 * 
	 * @return
	 */
	@Override
	public String getFileSaveDir()
	{
		return ShortVideoUploader.getShortVideoFileSaveDir();
	}

	/** 支持的大文件类型  */
	@Override
	protected int getFileType()
	{
		return BigFileType.FILE_TYPE_SHORT_VIDEO;
	}
	
	@Override
	protected String getTAG()
	{
		return "短视频";
	}

	/**
	 * 上传的短视频文件要保存的目录（此目录末尾要带“/”哦）。
	 * 
	 * @return
	 */
	public static String getShortVideoFileSaveDir()
	{
		return BaseConf.getInstance().getDIR_USER_SHORTVIDEO_UPLOAD();
	}

	/**
	 * 短视频文件最终保存绝对路径。
	 * 
	 * @return
	 */
	public static String getShortVideoFileSavePath(String fileMd5)
	{
		return ShortVideoUploader.getShortVideoFileSaveDir()+fileMd5;
	}

	/**
	 * 返回短视频文件分块存放的临时目录。
	 * <p>
	 * 为了防止重复和混乱，分块文件是单独保存在形如“md5码_uid”的目录下。
	 * 
	 * @param fileMd5
	 * @param userUid
	 * @return
	 */
	public static String getChunckShortVideoFileDir(String fileMd5, String userUid)
	{
		return ShortVideoUploader.getShortVideoFileSaveDir()+fileMd5+(userUid != null?"_"+userUid:"")+"/";
	}
}
